# -*- coding: utf-8 -*-
# @Time  : 2021/8/9 11:45
# @Author: masonsxu
# @File  : logger.py
# @Desc  : 调用python内置的logging模块实现日志管理，配置log.IO等框架实现日志可视化管理。


import asyncio
import logging
from infrastructure.utils.common.load_logger import load_log_config


async def create_log_task(log_word: str, level: str):
    """创建可被调度的异步日志记录协程任务

    Args:
        log_word (str): 日志内容
        level (str): 日志等级

    Returns:
        status (str): 日志内容(保存到指定位置)
    """
    server_logger = logging.getLogger('server_logger')

    log_word = f'\n{log_word}'
    # 一般采用 warning 级别日志即可
    if level == "warning":
        server_logger.warning(log_word)  # warning  警告级别日志  会在控制台输出
    elif level == "info":
        server_logger.info(log_word)  # info 消息备注 只能在log文件输出
    elif level == "error":
        server_logger.error(log_word)  # 普通错误 会在控制台输出
    elif level == "critical":
        server_logger.critical(log_word)  # 严重错误 会在控制台输出


async def log_task_main(log_word: str, level: str = "error"):
    """异步日志记录协程任务调度方法

    Args:
        log_word (str): 日志内容
        level (str): 日志等级
    """
    load_log_config(log_file_name='info_server', log_config=SYSTEM_LOG_CONFIG)

    await asyncio.create_task(create_log_task(log_word, level))


async def log_task_list_main(log_task_word_list: list):
    """异步日志记录协程任务调度方法

    Args:
        log_word (str): 日志内容
        level (str): 日志等级
    """
    load_log_config(log_file_name='info_server', log_config=SYSTEM_LOG_CONFIG)

    await asyncio.gather(
        *[
            asyncio.create_task(
                create_log_task(log_task_word['log_word'], log_task_word['level'])
            )
            for log_task_word in log_task_word_list
        ]
    )
